library(forecast)
## Warning: package 'forecast' was built under R version 3.4.4
library(ggplot2)
tv <- read.csv("TV_by_network_daypart.csv")
tvf <- sub('(.{4})(.{2})',"\\1-\\2", tv$date)
tvf <- as.Date(paste0(tvf, "-01"), "%Y-%m-%d")
tv$date <- tvf
out <- split(tv,list(tv$network,tv$daypart))
plot.ts(tv)
for (i in 1:length(out)) {
assign(paste0("tv_ts", i), as.data.frame(out[[i]]))
}
traintest <- function(a)
{
temp <- a
train <- subset(temp, temp$date < "2017-01-01" & temp$date >= "2013-01-01")
test <- subset(temp, temp$date >= "2017-01-01")
timeseries <- ts(train$viewers, start = 2014-01-01 ,frequency = 12)
timeseries1 <- ts(test$viewers, start = 2017-01-01 ,frequency = 12)
plot.ts(timeseries)
ts_stl <- stl(timeseries, s.window = "period")
plot(ts_stl)
ts_acf <- acf(timeseries)
ts_pacf <- pacf(timeseries)
ts_decompose = decompose(timeseries, "additive")
#autoplot(ts_decompose) + theme_minimal()
plot(ts_decompose)
par(mfrow = c(1,1))
ts_Hw <- HoltWinters(timeseries)
ts_forecast <- forecast(ts_Hw, h =12)
#autoplot(ts_forecast) + theme_minimal()
plot(ts_forecast)
lines(timeseries1, col = 'red')
mean(abs(test$viewers - ts_forecast$mean ))
}
traintest(tv_ts1)
## [1] 20.52022
traintest(tv_ts2)
## [1] 60.27782
traintest(tv_ts3)
## [1] 93.10595
traintest(tv_ts4)
## [1] 13.07586
traintest(tv_ts5)
## [1] 36.1841
traintest(tv_ts6)
## [1] 14.46771
traintest(tv_ts7)
## [1] 51.74338
traintest(tv_ts8)
## [1] 56.29067
traintest(tv_ts9)
## [1] 10.7754
traintest(tv_ts10)
## [1] 17.68645
traintest(tv_ts11)
## [1] 19.5647
traintest(tv_ts12)
## [1] 45.32363
traintest(tv_ts13)
## [1] 65.99625
traintest(tv_ts14)
## [1] 15.02938
traintest(tv_ts15)
## [1] 52.38683
traintest(tv_ts16)
## [1] 10.81039
traintest(tv_ts17)
## [1] 85.63665
traintest(tv_ts18)
## [1] 36.28251
traintest(tv_ts19)
## [1] 190.8097
traintest(tv_ts20)
## [1] 86.44478
traintest(tv_ts21)
## [1] 31.60935
traintest(tv_ts22)
## [1] 99.76095
traintest(tv_ts23)
## [1] 99.73155
traintest(tv_ts24)
## [1] 14.73406
traintest(tv_ts25)
## [1] 53.5617
traintest(tv_ts26)
## [1] 12.68668
traintest(tv_ts27)
## [1] 23.47888
traintest(tv_ts28)
## [1] 28.49202
traintest(tv_ts29)
## [1] 12.72243
traintest(tv_ts30)
## [1] 40.78742
traintest(tv_ts31)
## [1] 37.53029
traintest(tv_ts32)
## [1] 28.41601
traintest(tv_ts33)
## [1] 68.66555
traintest(tv_ts34)
## [1] 28.7374
traintest(tv_ts35)
## [1] 73.21512
traintest(tv_ts36)
## [1] 82.10259
traintest(tv_ts37)
## [1] 99.05151
traintest(tv_ts38)
## [1] 178.7292
traintest(tv_ts39)
## [1] 92.76801
traintest(tv_ts40)
## [1] 124.1401
traintest(tv_ts41)
## [1] 39.82747
traintest(tv_ts42)
## [1] 103.7571
traintest(tv_ts43)
## [1] 215.2595
traintest(tv_ts44)
## [1] 18.49259
traintest(tv_ts45)
## [1] 68.41505
traintest(tv_ts46)
## [1] 8.875389
#traintest(tv_ts47)
traintest(tv_ts48)
## [1] 48.63877
traintest(tv_ts49)
## [1] 21.82742
#traintest(tv_ts50)
traintest(tv_ts51)
## [1] 42.66445
traintest(tv_ts52)
## [1] 74.74314
traintest(tv_ts53)
## [1] 153.1797
traintest(tv_ts54)
## [1] 19.6662
traintest(tv_ts55)
## [1] 52.7505